package helper;

/**
 * Helferklasse zum Umwandeln verschiedener meterologische Werte
 * 
 * @author Sebastian Althof <get@itnuts.de>
 * @version 1.0.0
 * 
 */
public class WeatherMathHelper {

	/**
	 * Hitzeindex berechnen
	 * @see http://de.wikipedia.org/wiki/Hitzeindex
	 * @param fahrenheit
	 * @param humidity
	 * @return Hitzeindex
	 */
	public static double calculateHeatIndex(double fahrenheit, double humidity) {
		return (double) ((16.923
				+ (0.185212 * fahrenheit)
				+ (5.37941 * humidity)
				- (0.100254 * fahrenheit * humidity)
				+ (0.00941695 * (fahrenheit * fahrenheit))
				+ (0.00728898 * (humidity * humidity))
				+ (0.000345372 * (fahrenheit * fahrenheit * humidity))
				- (0.000814971 * (fahrenheit * humidity * humidity))
				+ (0.0000102102 * (fahrenheit * fahrenheit * humidity * humidity))
				- (0.000038646 * (fahrenheit * fahrenheit * fahrenheit))
				+ (0.0000291583 * (humidity * humidity * humidity))
				+ (0.00000142721 * (fahrenheit * fahrenheit * fahrenheit * humidity))
				+ (0.000000197483 * (fahrenheit * humidity * humidity * humidity))
				- (0.0000000218429 * (fahrenheit * fahrenheit * fahrenheit
						* humidity * humidity)) + 0.000000000843296 * (fahrenheit
				* fahrenheit * humidity * humidity * humidity)) - (0.0000000000481975 * (fahrenheit
				* fahrenheit * fahrenheit * humidity * humidity * humidity)));

	}

	/**
	 * Fahrenheit nach Celsius umwandeln
	 * @param fahrenheit
	 * @return
	 */
	public static double convertFahrenheit2Celsius(double fahrenheit) {
		return ((5 / 9.0) * (fahrenheit - 32.0));
	}

	/**
	 * Celsius nach Fahrenheit umwandeln
	 * @param celsius
	 * @return
	 */
	public static double convertCelsius2Fahrenheit(double celsius) {
		return (9.0 / 5.0 * celsius + 32.0);
	}

}
